package main

import (
	"fmt"
	"net"
	"socket"
)

// 服务端 都是tcp的
func main() {
	//创建监听
	//创建监听
	listen, err := net.Listen("tcp", socket.GetCon())
	//简写方式
	//listener, err := net.Listen("tcp", ":9099")
	if err != nil {
		fmt.Println("listener error", err)
	}
	for { //多连接建立
		//获取连接
		conn, err := listen.Accept()

		if err != nil {
			fmt.Println("conn error", err)
		}
		go handler(conn)
	}

}

func handler(conn net.Conn) {
	//创建字节数组切片获取客户端传递的内容
	bytes := make([]byte, 1024)
	//n是实际获取的数据长度
	n, err := conn.Read(bytes)

	if err != nil {
		fmt.Println("read error", err)
	}

	//数据已经被存在了字节数组切片里面了,我有1024个字节的buffer，但是客户端只发来了4个字节，所以要截取
	fmt.Println("conn data", string(bytes[:n]), "the data length is ", n)

	response := "hello world,i have received your data is 【" + string(bytes[:n]) + "】"

	//数据接收完毕，返回给客户端

	//n已经在上个作用域定义了，所以这个是等号
	n, err = conn.Write([]byte(response))

	if err != nil {
		fmt.Println("response data error length", err)
	}

	fmt.Println("result", n)

	closeErr := conn.Close()
	if closeErr != nil {
		fmt.Println("close error")
	}
}
